// m

// 给定两个整数数组nums1，nums2，要求：计算两个数组中公共的，长度最长的子数组长度

function findLength(nums1, nums2) {
    // 数组为空的时候直接返回0
    if (!nums1.length ||!nums2.length) {
        return 0
    }

    // 创建一个二维数组，用来保存遍历后的每次长度
    let arr = new Array(nums1.length + 1)
    for (let i = 0; i < arr.length; i++) {
        arr[i] = new Array(nums2.length + 1).fill(0)
    }

    // 最大长度变量
    let result = 0
    for (let i = 1; i <= nums1.length; i++) {
        for (let j = 1; j <= nums2.length; j++) {
            // 遇到nums1[i - 1] === nums2[j - 1])，则更新dp数组
            if (nums1[i - 1] === nums2[j - 1]) {
                // 依赖左上的值
                arr[i][j] = arr[i - 1][j - 1] + 1
                // 判断累加后的数字和当前的最大长度
                result = Math.max(result, arr[i][j])
            }
        }
    }
    return result
}

let nums1 = [1, 2, 3, 2, 1], nums2 = [3, 2, 1, 4, 7]

console.log(findLength(nums1, nums2))